home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / feel0_89.lha / Feel / Modules / gens.em < prev    next >
Lisp/Scheme  |  1993-07-15  |  2KB  |  121 lines

  1. ;; Eulisp Module
  2. ;; Author: pab
  3. ;; File: gens.em
  4. ;; Date: Tue Jun 29 20:59:56 1993
  5. ;;
  6. ;; Project:
  7. ;; Description: 
  8. ;;   All generic functions defined in the standard 
  9. ;;   that have not yet been defined go here.
  10.  
  11. (defmodule gens
  12.   (init
  13.    defs
  14.    extras0
  15.    macros0
  16.    )
  17.   ()
  18.        
  19.   
  20.  
  21. ;; ----------
  22. ;; functions for collections
  23.  
  24. (defgeneric size (o))
  25. (export  size  emptyp  member  gf-member  do  gf-do  anyp
  26.      gf-any  map  gf-map  accumulate  accumulate1  fill
  27.      concatenate  gf-concatenate  concatenate-as  
  28.      gf-concatenate-as  deep-copy  shallow-copy reverse clone)
  29.  
  30. (defgeneric emptyp (o))
  31.  
  32. (defun member (v c . f) (gf-member v c (if f (car f) eq)))
  33.  
  34. (defgeneric gf-member (v c f))
  35.  
  36. (defun do (f c . cs) (gf-do f c cs))
  37.  
  38. (defgeneric gf-do (f c cs))
  39.  
  40.  
  41. (defun anyp (f c . cs) (gf-any f c cs))
  42.  
  43. (defgeneric gf-any (f c cs))
  44.  
  45. (defun map (f c . cs) (gf-map f c cs))
  46.  
  47. (defgeneric gf-map (f c cs))
  48.  
  49. (defgeneric accumulate (f i c))
  50.  
  51. (defgeneric accumulate1 (f c))
  52.  
  53. (defgeneric fill (mc v start end))
  54.  
  55. (defun concatenate (sequence . more-sequences)
  56.   (gf-concatenate sequence more-sequences))
  57.  
  58. (defgeneric gf-concatenate (sequence more-sequences))
  59.  
  60. (defun concatenate-as (class sequence . more-sequences)
  61.   (gf-concatenate-as class sequence more-sequences))
  62.  
  63. (defgeneric gf-concatenate-as (class sequence more-sequences))
  64.  
  65. (defgeneric deep-copy (x))
  66.  
  67. (defgeneric shallow-copy (x))
  68.  
  69. (defgeneric clone (x))
  70.  
  71. (defgeneric reverse (sequence))
  72.  
  73. ;; ----------
  74. ;; p123
  75.  
  76. (defgeneric element (c s))
  77.  
  78. (defgeneric (setter element) (c s v))
  79.  
  80. (defgeneric current-key (c s))
  81.  
  82. (defgeneric key-sequence (c))
  83.  
  84. (export element current-key key-sequence)
  85.  
  86.   ;; Iteration protocol
  87.  
  88. (defgeneric initial-state (c))
  89.  
  90. (defmethod initial-state (c) (if (= 0 (size c)) () 0))
  91.  
  92. (defgeneric next-state (c s))
  93.  
  94. (defmethod next-state (c s) (if (< (+ s 1) (size c)) (+ s 1) ()))
  95.  
  96. (defgeneric final-state (c))
  97.  
  98. (defmethod final-state (c) (if (= 0 (size c)) () (- (size c) 1)))
  99.  
  100. (defgeneric previous-state (c s))
  101.  
  102. (defmethod previous-state (c s) (if (= s 0) () (- s 1)))
  103.  
  104. (defgeneric current-element (c s))
  105.  
  106. (defmethod current-element (c s) (element c s))
  107.  
  108. (defgeneric (setter current-element) (c s v))
  109.  
  110. (defmethod (setter current-element) (c s v) ((setter element) c s v))
  111.  
  112. (defgeneric copy-state (c s))
  113.  
  114. (defmethod copy-state (c s) s)
  115.  
  116. (export initial-state next-state final-state previous-state
  117.     current-element copy-state)
  118.  
  119.   ;; end module
  120. )
  121.